home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_02_04
/
2n04045a
< prev
next >
Wrap
Text File
|
1990-12-27
|
3KB
|
99 lines
#include "sm.h"
#include <stdio.h>
#include <string.h>
#include <conio.h>
#include <io.h>
#include <fcntl.h>
#include <sys\stat.h>
#include <stdlib.h>
/******************************************************************
* Output speech file stored using record().
*
* Parameters:
* Filename to output.
*
* Notes:
* 1. This routine will output any file, using any compression
* scheme supported by Covox. It outputs the entire file.
*
* 2. Compiled using TurboC's large memory model.
*
* 3. Requires sm.h and cvxtlcc.lib, supplied by Covox.
*
* 4. As written, the routine outputs to the Voice Master speaker.
*
* Copyright:
* Original code by William H. Roetzheim (619) 669-6970
* Copyright 1990 by William H. Roetzheim
* All rights reserved.
**********************************************************************/
void main (int argc, char *argv[])
{
int i;
long lLength;
char *lpBuffer;
char szFileName[15];
int nFile;
if (argc != 2)
{
printf ("\nsyntax: Say filename");
exit (-1);
}
/* test for extension in filename */
for (i = 0; i < strlen (argv[1]); i++)
{
if (argv[1][i] == '.')
{
printf ("\n File name should not have an extension.");
exit (-1);
}
}
strcpy (szFileName, argv[1]);
strcat (szFileName, ".v3s");
printf ("\nOpening %s.", szFileName);
nFile = open (szFileName, O_BINARY | O_RDONLY, S_IREAD | S_IWRITE);
if (nFile == -1)
{
printf ("\nError opening file.");
exit (-1);
}
lLength = filelength(nFile);
if (lLength > 0xFFFF)
{
printf ("\nFile too large.");
exit (-1);
}
lpBuffer = malloc ((size_t) lLength);
lseek (nFile, 0, SEEK_SET);
if (read (nFile, lpBuffer, (unsigned) lLength) != lLength)
{
printf ("\nError reading file.");
exit (-1);
}
/* The four main parameters for this function are as follows */
/* lpBuffer points to the start of the buffer to be output */
/* for PCM files (not compressed), this can be a location */
/* within the file. For compressed data, it MUST be the start */
/* of the buffer so the header can be found. */
/* lLength is the number of samples to be output. For all files */
/* (including compressed files), this can be less than the full */
/* sample size. */
/* The fourth parameter (second zero here) is the port number */
/* Of particular interest are 0 for Voice Master (factory default) */
/* 4 for LPT1: as used by the Speech Thing and the Sound Master, and */
/* 8 for the PC's internal speaker. */
if (say (lpBuffer, lLength, 0, 0, 0, 0) == 1)
{
printf ("\nError during playback.");
}
close (nFile);
free (lpBuffer);
}